package com.oazon.moco.link.core;

import com.oazon.moco.link.core.source.LinkEventSource;

/**
 * 事件订阅通知接口
 * @author chengke
 *
 */
public interface ILinkEventController {


	/**
     * 添加事件监听
     * 
     * @param listener
     * @param singleton
     */
	public void registLinkListener(LinkEventListener listener);
	
	/**
     * 添加事件监听
     * 
     * @param listener
     * @param singleton
     */
    public void registLinkListener(LinkEventListener listener, boolean singleton);
	
    /**
     * 移除事件监听
     * 
     * @param listener
     */
    public void unregistLinkListener(LinkEventListener listener);
    
    /**
     * 通知指定设备
     * @param uuid
     */
    public void notify(String uuid, LinkEvent Event);
    
    /**
     * 通知指定类型的事件源
     * @param source
     */
    public void notify(LinkEventSource source,LinkEvent event);
    
    
    /**
     * 通知所有的监听者
     */
    public void notifyListeners(LinkEvent event);

}
